package be.lioche.soupe;

import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.ItemStack;

public class Spawn implements Listener{

	public Main plugin;
	public Spawn(Main main) {
		this.plugin = main;
	}

	/*--------------------------------------GESTION DU SPAWN (KITS AUTO ET TP)----------------------------------*/

	@EventHandler
	public void nokit(PlayerMoveEvent e){

		Player p = e.getPlayer();
		//final Location spawn = new Location(p.getWorld(), 13.5, 82, -15.5);
		final Location down = new Location(p.getWorld(), p.getLocation().getX(), p.getLocation().getY()-1, p.getLocation().getZ());

		if(plugin.getConfig().getBoolean(p.getName()+".CanKit") == true){// PEUX SAUTER
			if(!p.isDead()){
				if(p.getGameMode() != GameMode.CREATIVE){
					if(p.getLocation().getY() < 95.0){ // SI IL SAUTE ZONE COMBAT

						if(plugin.getConfig().getString(p.getName()+".havekit").equalsIgnoreCase("flash")){
							if(plugin.getConfig().getInt(p.getName()+".Kits.flash.lvl") == 1){
								be.lioche.soupe.kits.Flash.lvl1(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.flash.lvl") == 2){
								be.lioche.soupe.kits.Flash.lvl2(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.flash.lvl") == 3){
								be.lioche.soupe.kits.Flash.lvl3(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}
						}else if(plugin.getConfig().getString(p.getName()+".havekit").equalsIgnoreCase("defaut")){

							if(plugin.getConfig().getInt(p.getName()+".Kits.defaut.lvl") == 1){
								be.lioche.soupe.kits.Defaut.lvl1(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.defaut.lvl") == 2){
								be.lioche.soupe.kits.Defaut.lvl2(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.defaut.lvl") == 3){
								be.lioche.soupe.kits.Defaut.lvl3(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}

						}else if(plugin.getConfig().getString(p.getName()+".havekit").equalsIgnoreCase("terroriste")){

						if(plugin.getConfig().getInt(p.getName()+".Kits.terroriste.lvl") == 1){
							be.lioche.soupe.kits.Terroriste.lvl1(p);
							plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
							plugin.saveConfig();
						}if(plugin.getConfig().getInt(p.getName()+".Kits.terroriste.lvl") == 2){
							be.lioche.soupe.kits.Terroriste.lvl2(p);
							plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
							plugin.saveConfig();
						}if(plugin.getConfig().getInt(p.getName()+".Kits.terroriste.lvl") == 3){
							be.lioche.soupe.kits.Terroriste.lvl3(p);
							plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
							plugin.saveConfig();
						}

					}else if(plugin.getConfig().getString(p.getName()+".havekit").equalsIgnoreCase("freezer")){
							if(plugin.getConfig().getInt(p.getName()+".Kits.freezer.lvl") == 1){
								be.lioche.soupe.kits.Freezer.lvl1(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.freezer.lvl") == 2){
								be.lioche.soupe.kits.Freezer.lvl2(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}if(plugin.getConfig().getInt(p.getName()+".Kits.freezer.lvl") == 3){
								be.lioche.soupe.kits.Freezer.lvl3(p);
								plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
								plugin.saveConfig();
							}
						}else{
							be.lioche.soupe.kits.Defaut.lvl1(p);
							plugin.getConfig().set(p.getName()+".CanKit", Boolean.valueOf(false));
							plugin.saveConfig();
						}
					}
				}
			}
		}else{
			if(!p.isDead()){
				if(p.getGameMode() != GameMode.CREATIVE){
					if(p.getLocation().getY() >= 96.0){
						p.teleport(down);
					}
				}
			}
		}



		Location pl = new Location(p.getWorld(), p.getLocation().getX(), p.getLocation().getY()-1, p.getLocation().getZ());
		Material c = pl.getBlock().getType();

		if(c == Material.COAL_BLOCK){
			@SuppressWarnings("deprecation")
			Block targetblock = e.getPlayer().getTargetBlock(null, 20);
			Location eye = targetblock.getLocation();
			eye.setY(eye.getY()+1);
			//Vector v = eye.getDirection();

			p.teleport(eye);
		}

		p.getInventory().remove(Material.BOWL);
		plugin.persoScoreboard(p);      
		plugin.vieScore(p);
		
		Location pos = p.getLocation();
		Material d = pos.getBlock().getType();
		Location last = new Location(p.getWorld(), p.getWorld().getSpawnLocation().getX()+0.5, p.getWorld().getSpawnLocation().getY()-10, p.getWorld().getSpawnLocation().getZ()+0.5);
		
		if(d == Material.GLASS){
			p.teleport(last);
		}
	}

	public static void givesoupe(Player p){
		ItemStack soupe = new ItemStack(Material.MUSHROOM_SOUP);

		for(int i = 31; i>0; i--){
			p.getInventory().addItem(soupe);
		}
	}


}
